Skip to content

hackclub/theplatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

276 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

The Platform

This is the platform used during the IRL portion of Hack Club: The Game, an 80 person scavenger hunt across Manhattan.

image

About the game

The platform has custom functionality to support the kind of scavenger hunt we were going for. Admins can create challenges, create and adjust zones on a map, assign challenges to zones, see and review submissions and pause challenge submissions. They can also invite new users + admins to the platform, create houses and assign teams to houses.

Media uploaded by teams are stored in an R2 bucket, and if the right credentials are provided a Google Calendar can also be imported to the platform for participants to view.

This project uses Hack Club Auth. Users are DM'd on Slack when their AirTag enters a new location, when their submissions are reviewed, or when they claim a zone.

This platform is designed to be used in conjunction with the AirTag tracking provided by hackclub/thegamezone, but is not fully necessary - a browser geolocation fallback exists.

Challenges

Teams can claim a zone if their AirTag/location is detected as being in a zone. They will be prompted to submit media to complete that challenge.

The submission then enters the review queue. Once it is approved, the team earns X points/hr since their initial submission of the challenge, rewarding teams for having claimed zones longer.

Zone stealing

If a zone has been claimed by another team, another team can steal it from them by completing the zone's challenge in it. Once a zone is stolen, the team will earn 80% of the points/hr of what the previous team was earning.

Quests

Quests are also known as general challenges. They are not associated with zones and give a base amount of points. Any number of teams can complete the same quest, however teams cannot resubmit to a quest unless their submissions were rejected.

Live events

Live events show up as a notification on the home page and represent scheduled events that award points for participation. Since points from a live event may be distributed strangely, awarding points for a live event means manually going to the team page (/admin/teams/:id) and adjusting their points.

Development

Prerequisites: Ruby 3.4.8 (use rbenv or rvm), PostgreSQL 14+, Node.js 18+.

Copy .env.example to .env and fill it out, then:

bundle install
bin/rails db:encryption:init   # generates ACTIVE_RECORD_ENCRYPTION_* values — paste into .env
bin/rails db:create db:migrate
bin/dev

Whitelist and promote your first admin user by running AllowedEmail.create!(email: "hcaemailofyourfirstadmin"), sign in then run User.find_by(email: "hcaemailofyourfirstadmin").update!(role: "admin") in the Rails console. Please note that from there, all new users need to be manually invited with their HCA email, which can be done from /admin.

Then, go to /admin/settings for game configuration.

Creating teams

First, create a house in /admin/houses. users that are assigned as Heads of Houses will see their team's submissions prioritised when reviewing at /admin/submissions. Then, create teams for each house at /admin/teams and designate team captains. Team captains are merely a visual change to the platform.

Manual point adjustments

To manually adjust points as an admin, go to /teams/:id or /admin/teams:id and scroll to the point adjustments section.

Adding new users

Can be done from /admin/users. Please note you should be importing users from CSV and adding admin users through the UI.

Considerations

From playing this game - here are some considerations from the IRL event.

  1. It is very important you balance the points that are awarded from zone challenges, quests and live events.

Quests that take longer to complete should award more points, because they only give points as a one-time thing. Likewise with live events - increasing the amount of points awarded by live events will also promote attendance at them.

Because zone challenges will reward passive points for as long as the team holds them, they should reward less points to avoid massive inflation in the amount of points given. There is an incentive for claiming a zone first because a zone that is stolen multiple times will progressively reward less and less points.

  1. Design quests that are completable indoors!

Some of your quests should be completable indoors/with minimal props, in cases of bad weather, or during game downtime where teams technically shouldn't be going outside but still want to be completing challenges.

  1. Pause passive point earning from zones during game downtime.

There's an option for this in /admin/settings. This is to avoid massive point inflation for games that have overnight downtime.

  1. Make sure your reviewers are consistent with what counts for challenge completions.

  2. We strongly recommend you have another method of contact with your attendees other than Slack (preferably phone numbers) so that you can inform them of last minute game updates or changes.

About

IRL game platform for Hack Club: The Game

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors