Skip to content
all projects

~/project/sharkcult.md

Shark Cult

Tame sharks for points

date
August 27–29, 2021
type
Hackathon
won
🏆 Best Domain Name · SharkHacks3

Donald Lee, with Henry Zhou, Matthew Quock

sharkcult · preview
Shark Cult: Tame sharks for points

## overview

Built for SharkHacks3, an MLH hackathon over August 27–29, 2021, where it won Best Domain Name from Domain.com.

Ever wanted to start a cult of sharks, or just sharpen your aim? Shark Cult is a browser game: tame sharks for points by clicking them as they leap out of the water.

## demo

## inspiration

Inspiration

The shark theme came from the hackathon. The gameplay borrows from Fruit Ninja, and the collect-them-all loop is straight out of gacha games. We threw Blåhaj in too, because it's a huge meme within MLH.

## what-it-does

What it does

Wild sharks jump out of the water and you tame them by clicking before they get away. You don't have to catch every one, but miss ten and the game ends. Faster sharks are worth more points.

Click a shark and it shrinks, turns cute, and swims back and forth. The more you tame, the higher your score. Fast sharks need quick reactions and careful aim. Don't have that yet? Play more.

## how-we-built-it

How we built it

HTML, CSS, and JavaScript drive the front end. JS spawns the sharks, sends them off in random directions, detects clicks, clears the ones you miss, and tracks failed attempts. CSS handles the shark and wave animations along with layout.

When the game ends you can add your score to the leaderboard. That data runs through Python into a MongoDB database on Google Cloud.

The sharks, clouds, and water were hand-drawn in ArtRage Lite, animated with CSS to give the ocean some life, and the whole UI was designed in Figma.

## challenges

Challenges

Moving and formatting objects on the front end gave us trouble, especially animating the waves and sharks. We don't reach for JavaScript often, so dynamically creating elements and wiring up listeners like onclick and animationend was tricky, and the syntax gap from Python meant a lot of Googling, picking a random list item is just simpler in Python.

The leaderboard was the big one: it wouldn't sort correctly. After hours stuck, we asked an MLH mentor, who pointed us to the fix in minutes.

## what-s-next

What's next

We're keeping it up for a year and collecting feedback from friends. If the reviews are good, we may add new features.

## next-project

VidNotes

Notes that ride along with the video

read the write-up