puzzleserver / mainpuzzleserver Goto Github PK
View Code? Open in Web Editor NEWThe main repo for the Puzzle Hunt and Puzzleday servers.
License: MIT License
The main repo for the Puzzle Hunt and Puzzleday servers.
License: MIT License
We need authors to be able to upload puzzle files, and the system to deliver those files to players.
It may be nice to have some sort of continuous integration build verification for PRs and also master branch. This would catch build errors before and when they enter master so that one mistake in a PR won't break everyone's builds.
Some puzzle contents could be small static websites (e.g. an html page with some images). They need to end up in the same blob directory for relative links to work. A way to do that could be to accept a zip file and extract it on the server before uploading all of the files to a blob.
We would need a way to differentiate zip files that aren't intended to be extracted from those that are.
Caused by PR #60
If a property on an Entity Framework table is a nullable type (such as String
or another class), the column is treated as optional and the DB will accept null. For values that shouldn't be null, we should set the [Required]
attribute.
We should have a page with everybody's name!
Most puzzle-like objects are puzzles, so we should set it to true by default to avoid mistakes
Unlock waves should support several scenarios:
If a team doesn't have puzzle 2 unlocked, they can still access its response page by navigating to Submissions?puzzleid=2&teamid=1
.
See title
Essential for monitoring an event while it is running.
Example: Can teams actually see the puzzles? OK good.
We have lots of puzzle and team pages that work in the context of an event, but don't check whether the input puzzle/team id is actually in the event.
I'm currently taking feedback on how we want the database to be set up - running multiple databases is cost prohibitive and many users overlap, so splitting by event would also increase the storage cost.
My existing plan is to have a current event table for each of Puzzleday & Puzzlehunt, then an archive table for each event. Anything that does not carry over between events (puzzles, authors, etc) gets archived when the event ends and the table is cleared out for the next event. The archived data will be accessible from the un-timed events feature.
Un-timed events will allow players to register & access events that ran in the past using the same UI that was available during the event - how exactly this will work is TBD, largely depending on Azure cost models. It might range from a single archive UI that provides access to puzzles grouped by event to a complete copy of the previous event site, including theming and interactive elements.
-It should be something that's generic enough that we can use it as the base layout and not feel like we need to completely redo the UI to re-theme
Since some people might have databases set up, I've left in the ability to see puzzles even without specifying an event. We should remove this once everyone's databases are clean.
Puzzleday only, so it should be in the puzzleday project
Requires metapuzzle specific logic
Players submit answers to puzzles, validate correctness, and update appropriate tables (i.e. responses)
Talk to Megan for access
Times are stored in the DB as UTC+0 but should maybe be shown to users in their local time zone. This crops up in a few places
Cards can be added to your board to track the progress of issues and pull requests. You can also add note cards, like this one!
A custom 404 page would be nice. Currently, returning NotFound(object? value)
with a string for the value sends the user to a blank page with the string as the only content.
A custom page would be useful as it could contain more detailed information and navigation links so the user has more options other than the browser back button to return to a real page.
When teams are submitting incorrect answers too fast, the current system allows X unlimited submissions, followed by an increasing time backoff for Y further submissions, followed by putting the puzzle in email mode -- telling the team to email an author and the author can unlock them. We should have some combination of those.
The PuzzleStatePerTeam table will be particularly sensitive to integrity issues since we don't want missing or duplicate entries. To handle this, we need a few things:
Automatic responses, lockout, etc
We can just show player e-mails to admins on website
Provide a place for people to start making pages and hooking them up.
Strawman proposal follows.
[Note: ~ links only available when the event is running]
[Note: * links should work for authors AND for admins, just with a different puzzle set]
[Note: ! links are admins only]
NAME OF EVENT
Puzzles
~ Solved Puzzles
~ Unsolved Puzzles
N Updates (if any) (aka Tasks and response updates - look ma, no mailer)
each update listed here in menu
Results
~ Standings
~ Fastest Solves
Registration
My team (if known)
Matchmaking Zone (teams ISO players, players ISO teams)
List of Teams
List of Players (full details for admins)
! Authors
! Admins
Resources
FAQ
Rules
Encodings
! Event Properties
My Events
! Events Dashboard
Sign up/Log in
Server can confirm who you are and what you're allowed to access.
Deep green solved and unlocked look too similar. Dana wants the unsolved color to be purple.
Currently the pages show player / team IDs to help with development and debugging. Those should be removed once we start to clean up the UI.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.