DOMjudge / domjudge

DOMjudge programming contest jury system
https://www.domjudge.org
GNU General Public License v2.0
733 stars 256 forks source link

Add an option of sending "encourage balloon" #2778

Open bhscer opened 1 week ago

bhscer commented 1 week ago

Description of the enhancement request

In ACM contests, it's common to stop distributing balloons during the scoreboard freeze. However, to create a more supportive and motivating environment, I propose adding "encouragement balloons" for teams with fewer solved problems. These balloons would offer a morale boost and enhance the overall competition experience, particularly for teams struggling to advance.

The goal you want to achieve

During the freeze period, teams that have solved fewer problems than a set threshold (x) can still receive balloons for any new problems they solve, until they exceed the threshold.

Expected behaviour

  1. Step 1 Add options in the contest settings to enable "encouragement balloons" and to specify a threshold for the number of solved problems. Teams with fewer solved problems than this threshold will receive the encouragement balloons.
  2. Step 2 In balloon list page, we add a special mark showing whether this balloon is an "encouragement balloon".

Any other information that you want to share?

I apologize for my poor English. I hope the developers can understand what I am trying to express. Thank you for your understanding!

vmcj commented 1 week ago

You can already do this when using the icpctools balloon utility as that tool has this builtin.

Before considering this I think this would need more people requesting this as it is a bit controversial within the community. So I'll label it as a low prio for now until we get more people requesting this to prevent against feature creep.

bhscer commented 1 week ago

You can already do this when using the icpctools balloon utility as that tool has this builtin.

Before considering this I think this would need more people requesting this as it is a bit controversial within the community. So I'll label it as a low prio for now until we get more people requesting this to prevent against feature creep.

Thank you for your quick response! Actually, I'm using the balloon API to read the balloons and import them into my system. I noticed the option "Show balloons post-freeze." Does this mean that it will collect balloons during the freeze period, allowing me to use the balloon API to read the balloons and decide whether to distribute them or not?

bhscer commented 1 week ago

Sorry that I accidentally closed this issue....

cubercsl commented 1 week ago

You can already do this when using the icpctools balloon utility as that tool has this builtin.

Before considering this I think this would need more people requesting this as it is a bit controversial within the community. So I'll label it as a low prio for now until we get more people requesting this to prevent against feature creep.

Thank you for your quick response! Actually, I'm using the balloon API to read the balloons and import them into my system. I noticed the option "Show balloons post-freeze." Does this mean that it will collect balloons during the freeze period, allowing me to use the balloon API to read the balloons and decide whether to distribute them or not?

This is how I configured in ICPC Asia EC Final, but the problem a team has solved was tracked by external system itself (since the API always respond the latest number instead of the number at that time).

bhscer commented 1 week ago

You can already do this when using the icpctools balloon utility as that tool has this builtin. Before considering this I think this would need more people requesting this as it is a bit controversial within the community. So I'll label it as a low prio for now until we get more people requesting this to prevent against feature creep.

Thank you for your quick response! Actually, I'm using the balloon API to read the balloons and import them into my system. I noticed the option "Show balloons post-freeze." Does this mean that it will collect balloons during the freeze period, allowing me to use the balloon API to read the balloons and decide whether to distribute them or not?

This is how I configured in EC Final, but the problem a team has solved was tracked by external system itself (since the API always respond the latest number instead of the number at that time).

Thank you for sharing! Yes, I do have a database to store how many balloons each team has gained. When inserting a balloon during the freeze period, I will check the team's historical balloon count to decide whether to distribute it or not.

cubercsl commented 1 week ago

Yes, this is how our balloon printer system is currently implemented. But I also think it will be nice if Domjudge internal balloon system have this feature.

Dup4 commented 1 week ago

Yes, this is how our balloon printer system is currently implemented. But I also think it will be nice if Domjudge internal balloon system have this feature.

yes yes

BestCuber!