Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add hint mechanisms to server #118

Closed
dlareau opened this issue Nov 30, 2019 · 13 comments
Closed

Add hint mechanisms to server #118

dlareau opened this issue Nov 30, 2019 · 13 comments
Labels
enhancement Hard Hard to implement
Milestone

Comments

@dlareau
Copy link
Owner

dlareau commented Nov 30, 2019

Created from #111
The server should support built in mechanisms for asking for and timing hints.

Some notes (mostly from the original post)

  • Teams will receive "hint credits" at a specified time, interval, or number of solved puzzles
  • Hints will only be able to be used on a puzzle after the puzzle has been available for a certain amount of time (Note to self, make that default a settings.py parameter)
  • There will be a new page for staff members to manage all hint-related information
@dlareau dlareau added enhancement Hard Hard to implement labels Nov 30, 2019
@dlareau dlareau added this to the Version 4.0 milestone Nov 30, 2019
@dlareau
Copy link
Owner Author

dlareau commented Jan 6, 2020

@samuel-yeom Starting to implement this, had a few questions.

  1. Are the hints meant to be prefilled text before the hunt or typed in by a staff member when requested by the team?
  2. I see three options for teams access to hints:
  • Hints are requested for a puzzle right on the corresponding puzzle page
  • Hints are requested for a puzzle through some a puzzle-hint page, linked from the puzzle page and specific to each puzzle. (Each puzzle has a link to a page with only requests/hints concerning that puzzle)
  • Hints are requested through some hunt-level "hints" page that would have a link in the top menu bar. This page would deal with requesting and viewing hints for all puzzles the team has access to in the hunt.
  1. Should the hint request from the team allow text? If so, should it require text?

@samuel-yeom
Copy link
Contributor

samuel-yeom commented Jan 7, 2020

  1. Ideally, the hints should be typed by a staff member upon request because prefilled hints are often useless and frustrating.
  2. I don't have a strong preference, but I lean toward the second option since it seems to strike the balance between ease of access and avoiding accidental hint requests.
  3. I think it makes sense to require text since I expect that most blank submissions would be unintentional.

@pitrack
Copy link
Collaborator

pitrack commented Jan 7, 2020

[third-party opinion, feel free to ignore]

the hints should be typed by a staff member upon request because [p]refilled hints are often useless and frustrating.

Depending on the volume of hint requests and size of hunt staff, you may want to automatically save responses to previous requests as possible prefilled options since different teams often get stuck at the same place and need the same push. This way, the hint response process would be either writing a new response or picking from a dropdown of previous responses. There are even more decisions to make, like how many prefilled responses to display, etc; there definitely is space for prefilled hints if a human picks one that properly applies to the hint request.

@dlareau
Copy link
Owner Author

dlareau commented Jan 7, 2020

Thanks. That all sounds good and is basically what I expected, I do like patrick's idea of at least storing previous hints to allow better crafting of future hints. How exactly that would work I haven't settled on yet.

@dlareau
Copy link
Owner Author

dlareau commented Jan 7, 2020

Regarding the thing I'm now calling the "hint lockout time" where a hint can't be used unless a puzzle has been available for a certain amount of time, do you see that time changing

  • Puzzle by puzzle (setting would go on the admin page for each puzzle)
  • Hunt by hunt (setting would go on the admin page for each hunt)
  • Almost never (setting would go in the settings.py file)

@samuel-yeom
Copy link
Contributor

My guess is something between "hunt by hunt" and "almost never". Can people who are not you change settings.py?

@dlareau
Copy link
Owner Author

dlareau commented Jan 7, 2020

Can? Yes. Should? Maybe. settings.py is tracked in git here, so ideally if it gets changed, the changes get committed and pushed. I'm certainly not against others doing that, they just have to know what they're doing.

Based on your response though I'll aim for a middle ground. There will be a field in each hunt, but I'll have the default value for that field populate based on a setting, so hopefully most of the time no thought is necessary when making a new hunt.

Any thoughts on that what that default should be?

@samuel-yeom
Copy link
Contributor

60 minutes sounds reasonable, but we'll let you know if we want to change the default value later.

@dlareau
Copy link
Owner Author

dlareau commented Jan 9, 2020

Do you see any need to be able to easily view/modify hints that have already been responded to? All hints will always ultimately always me viewable/modifiable via the admin object editor (like hunts and puzzles currently are), but I'm wondering given how large hint requests are (probably a sentence or two in both request and response) if we should only display hints that have not yet been responded to on the staff "Hints" page.

@samuel-yeom
Copy link
Contributor

It would be helpful to be able to easily view previous responses to hint requests (to help ensure the consistency and fairness of our responses to different teams).

@dlareau
Copy link
Owner Author

dlareau commented Jan 16, 2020

Just and update, this has gone down quite a rabbit hole.

I needed django-celery-beat to schedule hint releases, which will require Django 2.X any day now (celery/django-celery-beat#300). So I went to upgrade us to django 2.X, and everything worked great.... except our unit testing. I currently have a bug filed against django-nose for the unit testing issue (jazzband/django-nose#307)

All this to say: Roughly when is the next hunt? I'm hoping to have v4 out 1-2 months before the next hunt, so there is time to iron out any issues.

@dlareau
Copy link
Owner Author

dlareau commented Feb 6, 2020

I think this one is done, I abandoned the celery based method and things fell into place rather quickly. Everything mentioned above has been implemented. I did end up bringing everything up to Django 2.2 and python3 though, so it may take a bit before I get it up on the development server for playing with. Any update on that hunt date? Still hoping to get in time unlocked puzzles and non-counting puzzles.

@dlareau dlareau closed this as completed Feb 6, 2020
@samuel-yeom
Copy link
Contributor

We're currently considering April 25.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Hard Hard to implement
Projects
None yet
Development

No branches or pull requests

3 participants