Inspiration
The theme was Hack for a Halloween Character: build something a Halloween character would use in their day-to-day life. A ghost's day-to-day night shift is tough. So I built the tool every working ghosts can use, which is a scheduler that plans which houses to haunt, in what order, along which streets.
What it does
- Pick a haunting ground. Fly over a 3D Toronto city and choose a real neighbourhood, currently out the three: The Annex, Harbord Village or Huron-Sussex.
- Know strengths and weaknesses Six multiple choice questions build the ghost's profile. Questions like "are you scared of cats?" and "whats your signature move?" allows the program to collect the ghost's traits and incorporate them into the calculation(optimized routing).
- Get your route The city now turns into a top-down map and the app plans the scariest possible night. It shows the optimized routes for maximizing the scare score. It shows numbered stops, who lives there, how to scare them, and when the ghost will arrive. The whole procedure is set to end at 5:00AM before the sunrise.
Every house is a real building from OpenStreetMap.
How we built it
- Street data streets, houses, and parks, etc. were pulled from OpenStreetMap through the Overpass API and saved as static JSON.
- Scare Score Each house gets a base score multiplied by its traits and the ghost's affinities. For example, a cat * cat-terrified ghost = 0 a house next to church * a "never near churches" ghost = 0 Bad traits combination would result in 0.
Example: elderly couple, creaky house, cold-spot ghost who targets the elderly 50 × 1.6 × 1.3 × 1.25 = 130 arrive after their bedtime: 30 × 1.4 = 182 fear
Challenges we ran into
The first routes kept doubling back down the same street to reach a house. I snapped every stop to the street in front of the house instead of the nearest laneway, and added a penalty for retracing streets.
What's next for Haunt Scheduler
Add more neighbourhoods. "Group haunting," which is a new function where multiple ghosts coordinate routes without overlapping, aiming to get highest scariest scores among groups.
Built With
- css3
- github
- google-maps
- html5
- javascript
- node.js
- openfreemap
- openstreetmap
- overpass-api
- vercel
- vite
Log in or sign up for Devpost to join the conversation.