runway-project / hangar-api

A competition organization and tournament orchestration API, built for Runway Project
MIT License
2 stars 0 forks source link

Additions to support regular test battles by letting users rank craft and testers download suitable craft bundles #3

Open Waiwei8k opened 3 weeks ago

Waiwei8k commented 3 weeks ago

The community benefits from regular test battles. To make it easier for players to propose craft to run in test battles and to reduce the work required to run test battles I propose the following feature enhancements.

  1. Allow players to enter multiple craft.
    • Craft can be ranked in order of priority
    • Newly submitted craft default to the highest rank
    • If craft have the same rank, their priority will be ordered with the most recent craft having the highest priority continuing down the chain with lowering priority.
  2. Testers will be able to request a bundle of craft
    • Bundles can be downloaded as zip files
    • Testers can specify criteria for choosing craft
    • Criteria can include a number of craft per player in priority order
    • A number of craft in total drawing evenly between players until the number has been met
    • A cut off date after which older craft will be ignored may optionally be set
  3. Players who want their planes to be tested have to agree that anyone can download their plane
  4. An API may optionally be developed to facilitate automated access to craft bundles, but that is out of scope of this feature request
  5. An optional facility may be developed to allow test results to be returned and reported, but that is out of scope of this feature request

As an example, we have three players, Julie, Bob and Zenith and two testers Harry and Freda. Julie loves designing planes and considered each new plane to be better than the last. She does not alter the priority and submits 5 designs. Bob comes up with a great initial design followed by another three. He assigns the highest priority to his first submission and the same lower priority to the remaining three. Zenith submits a single design. Harry wants to run tests which will complete in a reasonable time so requests the best two craft from each player. He is then presented with a zip containing Julie's most recent two craft. Bob's first and most recent craft and Zenith's last craft. Freda wants to run a tournament with 6 craft and requests 6 of the best craft. She receives a zip with Zeniths design, Bobs best design, Bobs most recent design, Julie's most recent two designs and the most recent of Bob and Julie's remaining craft.

runway-project commented 3 weeks ago

Thanks for the detailed featured request. This spec looks goods, and I should be able to implement this as you've described it.

I think I'm going to be performing some larger refactors to the app, so that it works as a single page app that interacts with an API to perform actions on the backend. I think this will let me simplify the code a bit, and allow things like downloading craft files for testing to be automated.